package com.catmiao.rdd.instance;

import org.apache.spark.SparkConf;
import org.apache.spark.api.java.JavaRDD;
import org.apache.spark.api.java.JavaSparkContext;

import java.util.Arrays;
import java.util.List;

/**
 * @author ChengMiao
 * @title: Spark01_env
 * @projectName spark_study
 * @description: TODO
 * @date 2024/7/30 19:54
 */
public class Spark04_Memory_Partition {

    public static void main(String[] args) {

        SparkConf sparkConf = new SparkConf();

        // local环境中 分区数由环境的核心数决定
        sparkConf.setMaster("local");
        sparkConf.setAppName("env01");

        JavaSparkContext javaSparkConf = new JavaSparkContext(sparkConf);


        // 数据源

        List<String> list = Arrays.asList("kirito", "asuna", "Monster");

        // 对数据进行切片【减小规模】，也称之为分区，底层完成
        // 分区数量是需要手动设定的
        //  - param1 对接的数据源集合
        //  - param2 切片数量
        // 默认值分区：
        //  - 1. 优先取值 spark.default.parallelism
        //  - 2. 如果不存在，则取值 totalCores
        JavaRDD<String> rdd = javaSparkConf.parallelize(list,3);

        // 将分区后的数据保存在磁盘中
        rdd.saveAsTextFile("java_out");

        javaSparkConf.stop();
    }
}
